BIN=main
OBJ=$(SRC:.cpp=.o)      #SRC的所有.cpp文件，生成同名.o文件

SRC=$(shell ls *.cpp)   #利用shell命令获取所有.cpp文件
# SRC=$(wildcard *.cpp) #wildcard也可以获取所有.cpp文件

CC=g++
LFLAGS=-o
FLAGS=-c
RM=rm -f

$(BIN):$(OBJ)
	@$(CC) $(LFLAGS) $@ $^         #^表示BIN的依赖列表
	@echo "linking... $^ to $@"
%.o:%.cpp                          #%.o %.c 分别表示展开所有的.o和.cpp 
	@$(CC) $(FLAGS) $<             #<表示所有的.cpp文件
	@echo "compiling... $^ to $@"

.PHONY:clean
clean:
	@$(RM) $(BIN) $(OBJ)

# BIN=main
# SRC=main.cpp
# CC=g++
# FLAGS=-o
# RM=rm -f
# 
# $(BIN):$(SRC)
# 	$(CC) $(FLAGS) $@ $^
# 	#$(CC) $(FLAGS) $(BIN) $(SRC)
# 
# .PHONY:clean
# clean:
# 	$(RM) $(BIN)




# main:main.o
# 	g++ main.o -o main
# main.o:main.s
# 	g++ -c main.s -o main.o
# main.s:main.i
# 	g++ -S main.i -o main.s
# #main.i:main.cpp
# 	#g++ -E main.cpp -o main.i
# 
# .PHONY:clean
# clean:
# 	rm -f main
# 	rm -f main.o
# 	rm -f main.s
# 	rm -f main.i
# 
